/*******************************************************************************
Entity.h

	An abstract Entity class, used to create a contracted interface.
*******************************************************************************/

#pragma once

#include <string>		// Nice strings!
#include "Controller.h"	// The Controller base class

class Entity
{
public:
	// Set the location of the entity
	void SetPosition(float x, float y) { m_x = x; m_y = y; }
	void SetSize(float width, float height) { m_width = width; m_height = height; }
	void SetAsBounds(bool isBounds) { m_isBounds = isBounds; }
	// Pure virtual Update function
	virtual void Update(float fElapsed) = 0;
	// Gets the location and size of the entity
	float GetX(void) { return m_x; }
	float GetY(void) { return m_y; }
	float GetWidth(void) { return m_width; }
	float GetHeight(void) { return m_height; }
	// Check if the entity is a boundary
	bool IsBounds(void) { return m_isBounds; }
protected:
	// The locaiton and size of the entity
	float m_x, m_y, m_width, m_height;
	// Is the entity a boundary?
	bool m_isBounds;
}; // Entity